The present invention relates to data processing systems, and more particularly, to subclassing objects across dynamic language boundaries using a System Object Model (SOM).
After years of debate and discussion, object-oriented programming languages (or OOP) are becoming mainstream programming technologies. The OOP languages offer improved programmer productivity, reusable code and easier maintenance. The IBM System Object Model (SOM) product, which is manufactured by the IBM Corporation, is a language neutral object-oriented object model that can be used to create user toolkits (System Object Model is a trademark of the IBM Corporation). An important requirement for such a user toolkit is the ability to subclass objects included in the toolkit. An object, as used in this invention, has the properties of encapsulation, inheritance, and polymorphism. Encapsulation refers to the hiding of an object""s implementation details. Inheritance refers to a technique of specifying the shape and behavior of a class of objects, called a derived class, or a subclass, as incremental differences from another class, called a parent class or superclass. Polymorphism refers to the ability to hide different implementations behind a common interface, simplifying the communications among the objects. The subclassing of objects provides a mechanism to create completely new application objects that can cooperate with the objects in the toolkit. This allows the objects to be used in an application builder that can be offered with the toolkit. Early object-oriented object models allowed subclassing only for static languages such as C/C++. However, recent efforts have concentrated on providing subclassing for dynamic object-oriented languages such as Smalltalk, REXX and Common LISP (CLOS).
One method discloses: a procedure for permitting classes written in a dynamic language to be exported to SOM. The procedure consists of writing a class definition file that describes the interfaces of the dynamic language methods. The class definition file contains all the prototypes for the dynamic language method. Next, a class implementation file is created containing method bodies, which are special stubs that pass control to a dynamic language method dispatcher. A class object is passed as a parameter to the dynamic language method dispatcher which starts method lookup for the class. A SOM compiler processes the class definition file and creates an include file. Instances and send messages are created using the class object. Subclassing is accomplished using the include files generated by the SOM compiler.
Another procedure discloses a dynamic language that creates a SOM proxy object to represent real SOM objects. The proxy object has an instance variable which points to the real SOM object, and is used by the dynamic language to send messages to the SOM objects. The concept relies upon the implementation of a generic method by the dynamic language which allows xe2x80x9cunknownxe2x80x9d methods, that are called when the object receives a message that is not recognized by the dynamic language. Since SOM messages are foreign to the dynamic language, the xe2x80x9cunknownxe2x80x9d methods enables redirection of messages to the SOM objects.
Therefore, it is desirable to have a mechanism that provides subclassing of objects in a System Object Model toolkit for an object-oriented dynamic language.
This invention relates to a method and apparatus for subclassing System Object Model (SOM) objects for a dynamic object-oriented language. Subclassing permits a user to change the default behavior of the objects using the dynamic language. A proxy class object is created using the dynamic language that points to the SOM class object. The proxy class object contains a stub method for each of the SOM classes. Activation of the stub method causes the corresponding SOM method to be invoked. Next, a dynamic language subclass is created. This is followed by the creation of a SOM class object using the SOM interface xe2x80x9csomCreateDynamicClassxe2x80x9d, which causes certain SOM methods to be overridden by dynamic language redispatch stubs. The dynamic language causes the xe2x80x9csomDispatchxe2x80x9d interface to be overridden and replaced with its own dispatch procedures. The new dispatch procedure searches for a method in the dynamic language class object method table first, and if not found, redirects the message to the SOM environment.